package org.terramagnet.workflow.dynamic;

import com.fasterxml.jackson.databind.JsonNode;

/**
 * 工作任务实例.
 *
 * @author terrason
 */
public interface Work {

    /**
     * 设置输入.
     */
    Work input(String key, Object value);

    /**
     * 设置输出.
     */
    Work output(String... name);

    /**
     * 执行工作任务.
     *
     * @return 工作任务执行结果. <strong>必须</strong>包含输出设置。
     */
    JsonNode execute();

    /**
     * 工作是否已开始.
     */
    boolean isRunning();

    /**
     * 工作是否已结束.
     */
    boolean isComplete();
}
